package agencia;

import java.util.Date;
import java.util.LinkedList;

public class ReservaHotelPaquete {
	private Hotel hotel;
	private Date checkIn;
	private Date checkOut;

	private LinkedList<ReservaExcursionHotel> excursiones;
	
	public LinkedList<ReservaExcursionHotel> getExcursiones() {
		return excursiones;
	}
	
	private void setExcursiones(LinkedList<ReservaExcursionHotel> excursiones) {
		this.excursiones = excursiones;
	}
	public ReservaHotelPaquete(){
		this.excursiones = new LinkedList<ReservaExcursionHotel>();
	}
	public Hotel getHotel() {
		return hotel;
	}
	public void determinarHotel(Hotel hotel) {
		this.hotel = hotel;
	}
	public Date recuperarFechaCheckIn() {
		return checkIn;
	}
	public void determinarFechaCheckIn(Date checkIn) {
		this.checkIn = checkIn;
	}
	public Date recuperarFechaCheckOut() {
		//TODO Validar que existe fecha de checkout, si no exception.
		return checkOut;
	}
	public void determinarFechaCheckOut(Date checkOut) throws Error{
		/*the value 0 if the argument Date is equal to this Date; 
		a value less than 0 if this Date is before the Date argument; 
		and a value greater than 0 if this Date is after the Date argument. */
		if(checkOut.compareTo(this.checkIn)<0){
		this.checkOut = checkOut;
		}else{
			throw new Error("La fecha de salida es anterior o igual a la de entrada");
		}
	}

	public void agregarExcursion(Excursion excursion, Date fecha){
		//TODO Validar la fecha de excursion, tanto con las fechas de checkin y checkout como asi tambien si en esa fecha ya existe una excursion, de eso se encarga la clase ReservaExcursion
		ReservaExcursionHotel reservaExcursion = new ReservaExcursionHotel();
		
		reservaExcursion.setExcursion(excursion);
		reservaExcursion.setFechaDeExcursion(fecha);
		excursiones.add(reservaExcursion);
	}
	public int getCantidadDeDias(){
		int cantidadDias  = 0;
		
		return cantidadDias;
	}
	
}
